﻿#include "pch.h"
#include "BaseGameObject.h"
#include "Const.h"

/**
 * 构造方法。
 * @param drawer    绘图者
 * @param type      类型
 * @param x, y      左上角坐标
 */
BaseGameObject::BaseGameObject(HDC drawer, Type type, int x, int y) :
    mType(type),
    mX(x),
    mY(y),
    mDrawer(drawer) {
    // 加载图片
    CString imageFilePath;
    imageFilePath.Format(Const::IMAGE_FILE_PATH, type);
    mImage.Load(imageFilePath);

    // 绘制自身
    this->Draw();
}

/**
 * 析构方法。
 */
BaseGameObject::~BaseGameObject() {
}

/**
 * 绘制自身。
 */
void BaseGameObject::Draw() {
    mImage.BitBlt(mDrawer, mX * Const::GRID_SIZE, mY * Const::GRID_SIZE);
}

/**
 * 获取类型。
 * @return 类型
 */
BaseGameObject::Type BaseGameObject::GetType() {
    return mType;
}

/**
 * 移动。
 * @param moveResult    移动结果
 * @return 被推动的箱子
 */
BaseGameObject* BaseGameObject::Move(UINT, MoveResult* moveResult) {
    *moveResult = CANNOT_MOVE;
    return this;
}
